const { DataTypes, Model, Deferrable, TINYINT } = require("sequelize");
const sequelize = require("../../sequelize");
const Goods = require("../goods/goods");
const User = require("../user/user");
/**
 * 商品评论模型模型
 */
class OrderItem extends Model {
    static async getOrderItemList(page,limit,title){
        let where={}
        if (title) {
            where["title"]={}
            where.title[Op.like]="%"+title+"%"
        }
        let json={}
        json["list"]=[]
        let row=await OrderItem.findAll({
            include:[
                {
                    model:Goods,
                    as:"goods_item",
                    where:where
                },
                {
                    model:User
                }
            ],
            limit:limit,
            offset:limit*page-limit
        })

        row.forEach(value=>{
            json.list.push(value.toJSON())
        })
        json["totalCount"]=await this.count({
            include:[
                {
                    model:Goods,
                    as:"goods_item",
                    where:where
                }
            ]
        })
        return json
    }
    static async updateStatus(status,id){
        return await this.update({
            status:status
        },{
            where:{
                id:id
            }
        })
    }
    static async updateExtra(text,id){
        return await this.update({
            extra:text
        },{
            where:{
                id:id
            }
        })
    }
};
OrderItem.init({
    id:{
        type:DataTypes.INTEGER,
        primaryKey: true,
        autoIncrement: true
    },
    order_id:{
        type:DataTypes.INTEGER   
    },
    shop_id:{
        type:DataTypes.INTEGER
    },
    num:{
        type:DataTypes.INTEGER
    },
    price:{
        type:DataTypes.DECIMAL(10,2)
    },
    rating:{
        type:DataTypes.INTEGER
    },
    review:{
        type:DataTypes.TEXT
    },
    review_time:{
        type:DataTypes.DATE
    },
    skus_type:{
        type:DataTypes.TINYINT
    },
    goods_id:{
        type:DataTypes.INTEGER
    },
    goods_num:{
        type:DataTypes.INTEGER
    },
    user_id:{
        type:DataTypes.INTEGER
    },
    extra:{
        type:DataTypes.TEXT
    },
    status:{
        type:DataTypes.TINYINT,
        defaultValue:1
    }
}, {
    sequelize,
    modelName: "OrderItem",
    tableName: "order_item",
    createdAt:"create_time",
    updatedAt:"update_time",
})
module.exports = OrderItem